SAP ABAP DIALOG 表格控件的简单例子<转载>

您所在的位置:网站首页 erp 表格批量修改 SAP ABAP DIALOG 表格控件的简单例子<转载>

SAP ABAP DIALOG 表格控件的简单例子<转载>

2023-06-25 12:19| 来源: 网络整理| 查看: 265

本文是一个很见到的ALV表格控件例子,但是原文作者写的很详细,所以借过来一用,很适合新手练手用。在这里感谢原文作者大大! 原文链接:https://mp.weixin.qq.com/s/bhP3w5DIADdf9P624C5kpw

表格控件是ABAP编程中最常用的SAP标准控件之一,通过它可以非常方便的根据用户的操作动态对内表数据进行ALV格式的显示、更改、排序等操作。 简单的说表格控件是一个双向的数据输入/输出容器,它可以显示程序内表数据,也可将用户在表控件界面录入数据写回程序内表。 下面通过一个简单的例子来初步了解下下表控件如何使用 写一个程序实现如下简单功能 读取数据库一个表(SPFLI)的数据,将读取数据使用表控件显示。 备注:SPFLI是SAP IDES系统内已定义的存储航空信息数据库表,如果你的系统不存在这个表,可以选取任何自定义表作为系统操作演示使用。 2.对表控件显示数据进行修改,点击保存后更新数据库表。 具体实现的步骤 1.创建一个程序ZTABLECON(SE38) 在这里插入图片描述 在程序中定义表控件显示的内表数据 在这里插入图片描述 这里定义的程序内表ITAB,通过表控件显示此内表的内容,表控件录入的更新数据写回此内表,然后在更新到数据库。 2.创建放置表控件的屏幕 表控件需要放置到屏幕上,需要先创建一个屏幕。 在这里插入图片描述 点击创建屏幕,进入如下界面 在这里插入图片描述 3.创建表控件(使用表控件向导创建) 在上面步骤创建的屏幕上创建表控件对象 在这里插入图片描述 在这里插入图片描述 表控件名称:ZTBL,这里名称没特别要求,英文字符即可。 内表程序表:要和前面程序中定义内表名ITAB的一致。 在这里插入图片描述 激活屏幕后,点击返回逻辑流 在这里插入图片描述 系统自动生成表控件的PBO和PBA逻辑流 在这里插入图片描述 系统自动生成表控件的PBO和PBA逻辑流处理代码 在这里插入图片描述 上面步骤把放置表控件的屏幕和表控件创建好了。 接下来在程序里面写一个代码,将数据库表SPFLI的数据去取出到内表ITAB里面,在通过表控件将内表ITAB数据显示处理。(如下图) 在这里插入图片描述 激活后点击测试图标(如下图) 在这里插入图片描述 点击测试按钮,显示如下 在这里插入图片描述 从上图可以看到程序已取出数据库表SPFLI的数据,并通过表控件以ALV格式显示出来。上图可以看到目前屏幕9000只能显示数据,不能做任何操作。 为了能对显示的数据进行操作,比如:修改某行的数据,然后点击保存后将更改后数据保存到数据库表。 新增屏幕9000 GUI Status状态 在这里插入图片描述 在这里插入图片描述 要在屏幕9000上使用上面创建GUI状态,需要在屏幕的PBO逻辑流增加如下代码 在这里插入图片描述 在这里插入图片描述 点击激活后回到主程序,点击测试。 在这里插入图片描述 显示如下。 在这里插入图片描述 上图可以看到9000屏幕的GUI状态的2个按钮高亮显示出来,但是点击它们没有任何反应。 下面还需要对2个按键点击动作写上执行处理代码,要实现具体功能如下: 1.点击SAVE将用户修改后的表控件显示的数据,更新到数据库。 2.点击BACK退出当前程序。 在这里插入图片描述 在下图写上点击按钮的处理代码并激活程序 在这里插入图片描述 处理代码如下:

MODULE USER_COMMAND_9000 INPUT. CASE SY-UCOMM. WHEN 'BACK'. LEAVE PROGRAM. WHEN 'SAVE'. MODIFY SPFLI FROM TABLE ITAB. IF SY-SUBRC NE 0. MESSAGE I005(YMESS) WITH '更新数据错误!'. EXIT. ELSE. MESSAGE I005(YESS) WITH '更新数据OK!'. ENDIF. ENDCASE. ENDMODULE. " USER_COMMAND_9000 INPUT

点击SAVE按键功能测试,执行程序 在这里插入图片描述 将第1行红色框的修改上图所示,让后点击保存,可以看到SAVE按钮已起作用,执行了更新数据库操作。 在这里插入图片描述 通过SE16N查询数据库表SPFLI可以看到上面表控件的修改数据已更新到数据库表里面(如下) 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3